Bloque 4.1 · 30 min

Introducción a DDL

DDL (Data Definition Language) es el conjunto de comandos SQL encargado de definir la estructura de una base de datos.

Con DDL se crean tablas, bases de datos, restricciones, relaciones y estructuras permanentes. Es la parte del lenguaje SQL que construye la arquitectura del sistema.

Principales comandos DDL

Comando Función
CREATE Crear objetos
ALTER Modificar estructuras
DROP Eliminar objetos
TRUNCATE Vaciar tablas

Ejemplo CREATE DATABASE

CREATE DATABASE academia;

Este comando crea una base de datos vacía llamada academia. Todavía no contiene tablas ni registros.

Ejemplo CREATE TABLE

CREATE TABLE alumnos (
  id_alumno INT PRIMARY KEY,
  nombre VARCHAR(100),
  edad INT
);

Este comando crea una tabla llamada alumnos.

  • id_alumno: identificador único.
  • VARCHAR(100): texto variable de hasta 100 caracteres.
  • PRIMARY KEY: garantiza unicidad.
DDL construye la estructura del sistema antes de insertar datos.
TRUNCATE elimina todos los registros, pero mantiene la tabla. DROP elimina completamente la tabla.
¿Qué hace el comando CREATE TABLE?
Bloque 4.2 · 35 min

Tipos de datos DDL

Cada columna necesita un tipo de dato adecuado. Elegir correctamente el tipo mejora rendimiento, integridad y almacenamiento.

Tipos numéricos

Tipo Uso
INT Números enteros
DECIMAL Valores monetarios
FLOAT Números decimales aproximados

Tipos de texto

Tipo Uso
CHAR Texto fijo
VARCHAR Texto variable
TEXT Texto largo

Tipos de fecha

  • DATE
  • TIME
  • DATETIME
  • TIMESTAMP
CREATE TABLE productos (
  id_producto INT PRIMARY KEY,
  nombre VARCHAR(120),
  precio DECIMAL(10,2),
  fecha_creacion DATE
);

Explicación

  • DECIMAL(10,2): hasta 10 dígitos y 2 decimales.
  • DATE: almacena fechas válidas.
  • VARCHAR: ahorra espacio frente a CHAR.
Para dinero se recomienda DECIMAL y no FLOAT.
¿Qué tipo de dato es mejor para precios?
Bloque 4.3 · 35 min

Restricciones DDL

Las restricciones garantizan la integridad y coherencia de los datos.

PRIMARY KEY

Identifica registros únicos.

FOREIGN KEY

Relaciona tablas entre sí.

NOT NULL

Impide valores vacíos.

UNIQUE

Evita duplicados.

CHECK

Valida condiciones.

CREATE TABLE usuarios (
  id_usuario INT PRIMARY KEY,
  email VARCHAR(120) UNIQUE,
  edad INT CHECK (edad >= 18),
  nombre VARCHAR(100) NOT NULL
);

Explicación del ejemplo

  • email no puede repetirse.
  • edad debe ser mayor o igual a 18.
  • nombre es obligatorio.
Las restricciones evitan errores antes de que los datos entren al sistema.
Muchos errores empresariales aparecen por ausencia de restricciones.
¿Qué restricción evita emails duplicados?
Bloque 4.4 · 30 min

Ejemplo con Domestika

Una plataforma como Domestika necesita gestionar usuarios, cursos e inscripciones.

Diseño de tablas

CREATE TABLE cursos (
  id_curso INT PRIMARY KEY,
  titulo VARCHAR(150),
  precio DECIMAL(8,2)
);

CREATE TABLE usuarios (
  id_usuario INT PRIMARY KEY,
  nombre VARCHAR(100),
  email VARCHAR(120) UNIQUE
);

CREATE TABLE inscripciones (
  id_usuario INT,
  id_curso INT,
  fecha DATE,
  PRIMARY KEY(id_usuario,id_curso),
  FOREIGN KEY(id_usuario)
  REFERENCES usuarios(id_usuario),
  FOREIGN KEY(id_curso)
  REFERENCES cursos(id_curso)
);

Qué ocurre aquí

  • usuarios almacena alumnos.
  • cursos almacena cursos.
  • inscripciones conecta usuarios y cursos.
La tabla intermedia resuelve la relación N:M.
¿Qué tipo de relación existe entre usuarios y cursos?
Bloque 4.5 · 25 min

Introducción a DML

DML (Data Manipulation Language) permite manipular la información almacenada.

Mientras DDL crea estructuras, DML trabaja con los datos.

Comandos principales

Comando Función
INSERT Insertar registros
SELECT Consultar datos
UPDATE Modificar registros
DELETE Eliminar registros
DDL construye la casa. DML coloca los muebles y los modifica.
¿Qué hace DML?
Bloque 4.6 · 40 min

Sentencias esenciales de DML

INSERT

INSERT INTO alumnos
VALUES (1,'Ana',20);

Inserta un nuevo registro.

SELECT

SELECT * FROM alumnos;

Consulta todos los registros.

UPDATE

UPDATE alumnos
SET edad = 21
WHERE id_alumno = 1;

Modifica registros existentes.

DELETE

DELETE FROM alumnos
WHERE id_alumno = 1;

Elimina filas concretas.

Importancia del WHERE

Sin WHERE, UPDATE y DELETE afectan a TODA la tabla.

Uno de los errores más peligrosos en SQL: DELETE sin WHERE.
Practica siempre primero con SELECT antes de UPDATE o DELETE.
¿Qué ocurre si ejecutas DELETE sin WHERE?
Bloque 4.7 · 35 min

Otros comandos y transacciones

COMMIT

Confirma cambios permanentemente.

ROLLBACK

Deshace cambios no confirmados.

START TRANSACTION

Inicia una transacción.

START TRANSACTION;

UPDATE cuentas
SET saldo = saldo - 100
WHERE id = 1;

UPDATE cuentas
SET saldo = saldo + 100
WHERE id = 2;

COMMIT;

¿Qué consigue?

Garantiza que ambas operaciones se ejecuten juntas. Si una falla, puede hacerse ROLLBACK.

Las transacciones son fundamentales en bancos y ecommerce.
¿Qué hace ROLLBACK?
Bloque 4.8 · 30 min

Ejemplo con Zara Online Store

Una tienda online necesita gestionar productos, clientes y pedidos.

CREATE TABLE productos (
  id_producto INT PRIMARY KEY,
  nombre VARCHAR(120),
  stock INT,
  precio DECIMAL(10,2)
);

INSERT INTO productos
VALUES (1,'Chaqueta Denim',15,49.99);

SELECT * FROM productos;

Explicación

  • CREATE TABLE crea la estructura.
  • INSERT añade productos.
  • SELECT consulta el catálogo.

Actualización de stock

UPDATE productos
SET stock = stock - 1
WHERE id_producto = 1;
Cada compra modifica automáticamente el stock.
¿Qué comando modifica el stock?
Bloque 4.9 · 25 min

Integración de DDL y DML

DDL y DML trabajan juntos continuamente.

DDL DML
Crea estructuras Manipula datos
CREATE TABLE INSERT
ALTER UPDATE
CREATE TABLE clientes (
  id_cliente INT PRIMARY KEY,
  nombre VARCHAR(100)
);

INSERT INTO clientes
VALUES (1,'Carlos');
Primero se define la estructura y después se insertan datos.
¿Qué ocurre normalmente primero?
Bloque 4.10 · 25 min

Secuencia lógica y principios clave

Flujo habitual

  1. Diseñar modelo E-R.
  2. Crear tablas con DDL.
  3. Aplicar restricciones.
  4. Insertar datos con DML.
  5. Consultar y actualizar información.
  6. Gestionar transacciones.

Principios importantes

  • Integridad antes que velocidad.
  • Normalización correcta.
  • Uso adecuado de claves.
  • Seguridad y permisos.
Un mal diseño inicial genera problemas difíciles de corregir.
¿Cuál es el primer paso lógico?
Bloque 4.11 · 35 min

Ejemplo con HotelDB

HotelDB necesita gestionar habitaciones, clientes y reservas.

CREATE TABLE habitaciones (
  id_habitacion INT PRIMARY KEY,
  numero INT,
  precio DECIMAL(10,2)
);

CREATE TABLE clientes (
  id_cliente INT PRIMARY KEY,
  nombre VARCHAR(100)
);

CREATE TABLE reservas (
  id_reserva INT PRIMARY KEY,
  id_cliente INT,
  id_habitacion INT,
  fecha_entrada DATE,
  fecha_salida DATE,
  FOREIGN KEY(id_cliente)
  REFERENCES clientes(id_cliente),
  FOREIGN KEY(id_habitacion)
  REFERENCES habitaciones(id_habitacion)
);

Inserción de datos

INSERT INTO clientes
VALUES (1,'Laura');

INSERT INTO habitaciones
VALUES (101,301,120.00);

Consulta

SELECT *
FROM habitaciones
WHERE precio > 100;
HotelDB integra creación de estructuras y manipulación de datos.
¿Qué relaciona la tabla reservas?
Bloque 4.12 · 20 min

Algunos consejos

Buenas prácticas

  • Usa nombres coherentes.
  • Aplica PRIMARY KEY siempre.
  • Evita NULL innecesarios.
  • Haz backups frecuentes.
  • Usa transacciones en operaciones críticas.
  • Documenta tablas y relaciones.

Herramientas recomendadas

  • MySQL Workbench
  • DBeaver
  • pgAdmin
  • Oracle SQL Developer
No probar UPDATE y DELETE en entornos de pruebas puede ser desastroso.
Practicar SQL escribiendo código real es mucho más efectivo que memorizar teoría.
¿Qué práctica ayuda a evitar pérdidas masivas de datos?